﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace QLNSTL
{
    public partial class frmDSNghiPhep : Form
    {
        public frmDSNghiPhep()
        {
            InitializeComponent();
        }

        #region Xử lý sự kiện của gridView chính
        void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex < 0)
            {
                return;
            }
            if (dataGridView1.Rows[e.RowIndex].Cells["MaNP"].Value != DBNull.Value)
            {
                frmNghiPhep ttnv = new frmNghiPhep();
                ttnv.MaNghiPhep = int.Parse(dataGridView1.Rows[e.RowIndex].Cells["MaNP"].Value.ToString());
                if (ttnv != null)
                {
                    if (ttnv.ShowDialog() == DialogResult.OK)
                        Load_DataGridView1();
                }
                else
                    MessageBox.Show("null");
            }
        }
        #endregion

        #region Load dữ liệu ban đầu
        private DataTable ConvertData(IQueryable<NghiPhep> LinqTable)
        {
            DataTable result = new DataTable();
            result.Columns.Add("MaNP");
            result.Columns.Add("Họ Tên");
            result.Columns.Add("Ngày bắt đầu nghỉ");
            result.Columns.Add("Số ngày");
            result.Columns.Add("Lý do");

            foreach (var r in LinqTable)
            {
                DataRow row = result.NewRow();
                row["MaNP"] = r.maNghiPhep;
                row["Họ Tên"] = r.NhanVien.hoTen;
                row["Ngày bắt đầu nghỉ"] = r.ngayBatDau;
                row["Số ngày"] = r.soNgay;
                row["Lý do"] = r.lyDo;
                result.Rows.Add(row);
            }
            return result;
        }

        private void Load_DataGridView1()
        {
            QLNS_TLDataContext dc = new QLNS_TLDataContext();
            var tatcanghiphep = from c in dc.NghiPheps
                                where (DateTime.Compare((DateTime)c.ngayBatDau, DateTime.Now) + c.soNgay) >= 0
                                select c;
            dataGridView1.DataSource = ConvertData(tatcanghiphep);
            dataGridView1.Columns["MaNP"].Visible = false;
            DataGridViewCellStyle ds = new DataGridViewCellStyle();

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //Load dữ liệu cho dataGridView
            QLNS_TLDataContext dc = new QLNS_TLDataContext();

            //Load dữ liệu cho TreeView
            //Tất cả
            treeView1.Nodes.Add("Tất cả nhân viên");
            //Phòng ban
            treeView1.Nodes.Add("Phòng ban", "Phòng ban");
            var PBs = from pb in dc.PhongBans
                      select pb;
            foreach (var item in PBs)
            {
                treeView1.Nodes["Phòng ban"].Nodes.Add(item.tenPhongBan, item.tenPhongBan);
            }
            //Chức vụ
            treeView1.Nodes.Add("Chức vụ", "Chức vụ");
            var CVs = from cv in dc.ChucVus
                      select cv;
            foreach (var item in CVs)
            {
                treeView1.Nodes["Chức vụ"].Nodes.Add(item.tenChucVu, item.tenChucVu);
            }

            Load_DataGridView1();
        }
        #endregion

        #region Xử lý sự kiện của TreeView
        void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            if (e.Node.Text == "Tất cả nhân viên")
            {
                QLNS_TLDataContext dc = new QLNS_TLDataContext();
                var TatCaNghiPhep = from c in dc.NghiPheps
                                    select c;
                dataGridView1.DataSource = ConvertData(TatCaNghiPhep);
                return;
            }
            if (e.Node.Level == 1)
            {
                if (e.Node.Parent.Text == "Phòng ban")
                {
                    QLNS_TLDataContext dataContext = new QLNS_TLDataContext();
                    var NVTheoPhong = from c in dataContext.NghiPheps
                                      where c.NhanVien.PhongBan.tenPhongBan == e.Node.Text
                                      select c;
                    dataGridView1.DataSource = ConvertData(NVTheoPhong);
                }
                if (e.Node.Parent.Text == "Chức vụ")
                {
                    QLNS_TLDataContext dataContext = new QLNS_TLDataContext();
                    var NVTheoPhong = from c in dataContext.NghiPheps
                                      where c.NhanVien.ChucVu.tenChucVu == e.Node.Text
                                      select c;
                    dataGridView1.DataSource = ConvertData(NVTheoPhong);
                }
            }
        }
        #endregion
    }
}
